package com.kws.merchant.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kws.merchant.domain.GoodsView;

import java.util.List;

/**
 * 商品浏览记录表(GoodsView)表服务接口
 *
 * @author yxy
 * @since 2024-11-04 09:11:24
 */
public interface GoodsViewService extends IService<GoodsView> {

    /**
     * 分页查询列表
     */
    Page<GoodsView> pageList(GoodsView goodsView);

    Long addGoodsView(Long merchantId, Long goodsId, int type);

    /**
     * 查询访客数量
     * @param userId
     * @return
     */
    Double merchantVisitorByTime(Long userId,String time);

    /**
     * 查询浏览量
     * @param userId
     * @param time
     * @return
     */
    Double merchantViewByTime(Long userId, String time);

    /**
     * 根据类型时间查询访客数
     * @param companyId
     * @param time
     * @param type
     * @return
     */
    int merchantVisitorByTimeByType(Long companyId, String time, Integer type);

    /**
     * 总访客
     * @param userId
     * @return
     */
    Double countVisitor(Long userId);

    /**
     * 总浏览量
     * @param userId
     * @return
     */
    Double countView(Long userId);

    /**
     * 根据年-月查询浏览时间
     * @param companyId
     * @param year
     * @param month
     * @return
     */
    Double countTimeByYearAndMonth(Long companyId, int year,int month,int type);

    /**
     * 根据年-月查询浏览量人
     * @param companyId
     * @param year
     * @param month
     * @return
     */
    Double countPeopleByYearAndMonth(Long companyId,int year,int month,int type);

    /**
     * 根据年-月查询浏览量
     * @param companyId
     * @param type
     * @return
     */
    Double countViewTimeByYearAndMonth(Long companyId, Integer year, Integer month, Integer type);

    /**
     * 按年月日查询小时浏览量
     * @param companyId
     * @param type
     * @param sql
     * @return
     */
    Double countViewBySql(Long companyId, Integer type, String sql);

    /**
     * 按年月日查询小时停留时间-浏览时间
     * @param companyId
     * @param type
     * @param sql
     * @return
     */
    Double countViewTimeBySql(Long companyId, Integer type, String sql);

    /**
     * 根据sql查询访问量
     * @param companyId
     * @param type
     * @param sql
     * @return
     */
    Double countViewByPeopleSql(Long companyId, Integer type, String sql);
}
